package fachada;

import java.util.ArrayList;

import vos.PrecioValues;

import DAO.ConsultaDAO;



/**
 * Fachada para la clase precios
 */
public class Precios
{

	// -------------------------------------------------
	// Atributos
	// -------------------------------------------------

	/**
	 * Acceso a la consulta con la base de datos
	 */
	private ConsultaDAO dao;

	/**
	 * Instancia de la clase
	 */
	private static Precios instancia;

	// -------------------------------------------------
	// Constructor
	// -------------------------------------------------

	/**
	 * Metodo que devuelve la instancia de la clase
	 * @return la instancia si existe, null de lo contrario
	 */
	public static Precios getInstance( )
	{
		if ( instancia == null )
		{
			instancia = new Precios( );
		}
		return instancia;
	}

	/**
	 * Constructor por defecto de la clase Inicializa la conexion con la base de datos
	 */
	public Precios( )
	{
		dao = new ConsultaDAO( );
		inicializarConexion( );
	}

	// -------------------------------------------------
	// Metodos
	// -------------------------------------------------

	/**
	 * Metodo que inicializa la conexion con la base de datos
	 */
	private void inicializarConexion( )
	{
		dao.inicializar( );
	}

	/**
	 * Metodo que devuelve el precio segun su id
	 * @param idPrecio El id del precio
	 * @return El precio dado su id
	 * @throws Exception Si ocurre algun error con la conexion a la base de datos
	 */
	public PrecioValues darPrecioId( int idPrecio ) throws Exception
	{
		return dao.darPrecioId( idPrecio );
	}

	/**
	 * Metodo que devuelve el precio segun su origen a su destino
	 * @param continenteOrigen El continete origen del vuelo
	 * @param continenteDestino El continente destino del vuelo
	 * @return El precio segun los requerimientos
	 * @throws Exception Si ocurre algun error con la conexion a la base de datos
	 */
	public PrecioValues darPrecioSegunContinentes( String continenteOrigen, String continenteDestino, String clase ) throws Exception
	{
		return dao.darPrecioSegunContinentes( continenteOrigen, continenteDestino, clase );
	}

	/**
	 * Devuelve todos los precios de la aplicacion
	 * @return Una lista con todos los precios
	 * @throws Exception Si ocurre algun error con la conexion a la base de datos
	 */
	public ArrayList< PrecioValues > darTodosLosPrecios( ) throws Exception
	{
		return dao.darTodosLosPrecios( );
	}
}
